1. Field of the Invention
The invention relates to database management systems (DBMS). More particularly, it relates to improved methods and techniques for efficiently associating temporary information with data-elements in a memory data-space, and the use of those methods and techniques for improving the efficiency and reducing the complexity of on-line database administration utilities.
2. Description of the Related Art
Database administration utilities that use conventional methods and techniques typically require that databases be taken off-line in order to perform certain administrative tasks, such as reorganizing the database. For database systems that use relatively small data stores, taking the database off-line to perform administrative tasks does not raise significant operational issues, because the amount of off-line time required to perform the required administrative task is generally acceptable as it introduces only minimal disruption to operations. However, as the volume of data associated with a database increases, so does the time required to perform administrative tasks upon the database. For example, depending upon the nature of the administrative task to be performed, the time required to execute the administrative task can increase exponentially with the size of the database.
As would be expected, the longer the period of unavailability the greater the likelihood that adverse operational impacts will arise. Furthermore, as customer demands for databases with greater capacity and 24×7 availability increase, system administrators typically find it more and more difficult to schedule much needed maintenance and optimization routines. As a result, many administrative routines are not performed as often as they should to optimize system performance and/or to minimize loss of data in case of system failure resulting, ultimately, in reduced performance and increased operational risk.
Issues associated with database availability can be alleviated by allowing databases to remain on-line while administrative tasks are performed. However, using conventional techniques, allowing a database to remain on-line while performing certain administrative operations can greatly increase the complexity of the administrative utility needed to execute the operation. Such complexity can increase the time required to execute the administrative operation, increase system load, degrade system capacity and performance, and result in unacceptable operational conditions. In a poorly maintained and/or already over-loaded system, such increased load can, in the worst case, result in unrecoverable catastrophic system failure.
Allowing a database to remain on-line while performing an administrative task is being performed typically implies that multiple processes will simultaneously access the data tables and records maintained by the database. Depending upon the administrative operations to be performed, conflicting conditions can arise. For example, if the administrative operation involves copying records from one database table to a second database table, a change must be applied to both database tables if the change imposed by a concurrent process affects a data-element that has already been copied to the second database table. If such conflicts are resolved by locking large segments of the database for extended periods of time, many of the advantages of allowing simultaneous on-line access are negated. If, on the other hand, locks are not strictly imposed, conflicting versions of a database table can arise that must be tracked and later resolved.
Conventional approaches are not capable of efficiently tracking and coordinating the large amount of detailed information that must be maintained to resolve the data integrity and consistency issues that arise during the execution of an on-line reorganization tool. For example, conventional reorganization techniques typically synchronize data across database tables using log files containing a record of the changes made in one or more data tables. Such log-based approaches are relatively slow because they require searching a log file for records relevant to an affected data table, retrieving the relevant records from the log, identifying records in the affected data table that corresponds to the log request (possibly requiring a second search of the copied/reorganized data table), and appropriately applying the logged change. Furthermore, such conventional techniques typically use concatenated strings within the log file to act as unique keys. These keys are used to locate the corresponding records within the related data table, and a change recorded within the log file is then applied. Such concatenated keys are an inefficient mechanism for locating records within a database table. In addition, log files typically contain the actual changed data values, thereby increasing the size of the log file and increasing the amount of information that must be parsed. Furthermore, such log based techniques are sequential in nature, meaning that if five updates are performed against a record in one data table, all five updates are again performed upon the related record in the related data table, even though only the last update is needed to synchronize the two data tables.
Conventional approaches for resolving the discrepancies that arise during the execution of on-line database administrative operations, are I/O intensive, inefficient, time consuming and are not practical for large database systems that require high availability of database tables, and highly optimized performance. A new approach is needed for efficiently tracking and coordinating large amounts of detailed information related to the on-line execution of database administrative operation.